package com.pai4j.zwiki.dto;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

/**
 * ZWiki通知消息DTO
 * 用于向用户发送任务状态变更通知
 *
 * @author pai4j
 * @since 2025-10-14
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ZWikiNotificationMessage implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 通知类型：TASK_QUEUED, TASK_STARTED, TASK_PROGRESS, TASK_COMPLETED, TASK_FAILED
     */
    private String notificationType;

    /**
     * 任务ID
     */
    private String taskId;

    /**
     * 用户ID
     */
    private Long userId;

    /**
     * 项目名称
     */
    private String projectName;

    /**
     * 任务类型
     */
    private String taskType;

    /**
     * 当前状态
     */
    private String status;

    /**
     * 进度（0-100）
     */
    private Integer progress;

    /**
     * 当前步骤描述
     */
    private String currentStep;

    /**
     * 消息标题
     */
    private String title;

    /**
     * 消息内容
     */
    private String message;

    /**
     * 错误信息（如果有）
     */
    private String errorMessage;

    /**
     * 队列位置（如果在队列中）
     */
    private Integer queuePosition;

    /**
     * 预计等待时间（分钟）
     */
    private Integer estimatedWaitTime;

    /**
     * 时间戳
     */
    private Long timestamp;

    /**
     * 优先级
     */
    private String priority;
}

